/*    
 * Copyright (c) 2013 ISoftStone, Inc.
 * All right reserved.
 *
 * 文件名：      IChargingItemService.java
 * 作者:     Jacky Wang
 * 创建日期： 2013-7-23 下午01:39:00
 * 版本：           
 *
 */
package com.isoftstone.industry.aaa.core.service.assist;

import java.sql.Timestamp;
import java.util.List;

import com.isoftstone.industry.persistance.bean.BillingCycle;
import com.isoftstone.industry.persistance.bean.ChargingItem;
import com.isoftstone.modules.core.service.IGenericService;

/**
 * @author jacky
 */
public interface IChargingItemService extends IGenericService<ChargingItem, String>
{
	/**
	 * 每一时刻需要进行计费的计费子项，满足以下条件：</br>
	 * 生效日期<=当前日期<=失效日期
	 * 
	 * @param
	 * @return
	 * @throws
	 */
	List<ChargingItem> findNeedChargeItemsByUser(String userId, Timestamp date);

	/**
	 * 当前帐务周期内需要进行计费的计费子项，满足以下条件：</br>
	 * 生效日期<=周期截止日 && 失效日期>=周期起始日
	 * 
	 * @param
	 * @return
	 * @throws
	 */
	List<ChargingItem> findNeedChargeItemsByUserAndBillingCycle(String userId, BillingCycle billingCycle);
	
	void markInvalid(String id);

	void changeLastChargingTime(String id, Timestamp modifiedTime);
	
	long countNeedChargeItemsByUser(String userId, Timestamp date);
	
	long countNeedChargeItemsByUserInBillingCycle(String userId, BillingCycle billingCycle);

}
